class Solution {
    public int longestPalindromeSubseq(String s) {
         int len = s.length() ;
         char[] arr = s.toCharArray() ;
         int [][] dp = new int[len][len] ; 
         int sum = 0 ;
         for(int i = len-1 ; i>=0 ; i --){
            for(int j = i ; j < len ; j ++){
                if(arr[i] == arr[j]){
                  dp[i][j] = i==j?1:(i+1==j?2:dp[i+1][j-1]+2) ; 
                }else{
                  dp[i][j] = Math.max(dp[i][j-1] ,dp[i+1][j]);
                }
               sum = Math.max(sum , dp[i][j]);
            }
         }

      return sum ;
    }
}